#ifndef L2CDTP_CLIENT_HPP
#define L2CDTP_CLIENT_HPP

#include "L2CDTP.hpp"


namespace L2CDTP {

class Client {
public:
    
    typedef unsigned int (*ReadFrameCallback)(char *buffer);
    typedef unsigned int (*SendCallback)(const char *buffer,unsigned int size);

public:
    explicit Client(ReadFrameCallback read_frame_callback,SendCallback send_callback);
    virtual ~Client();

    bool executeCommand(CommandRequest_t request,CommandResponse_t *response);
    bool accessData(DataRequest_t request,DataResponse_t *response);
protected:
    ReadFrameCallback read_frame_callback;
    SendCallback send_callback;
};

}

#endif
